请问sizeof("abcdefg" + '2')的值是多少

来源:百度知道 编辑:UC知道 时间:2024/06/17 17:59:14
请给出详细解释,谢谢先
首先谢谢的回答,但是还是有些模糊。
我看楼下有兄弟说sizeof(“abcdefg”+'2' +‘2’)的值为4,不知道是否正确,如果是的话,对sizeof的理解就更麻烦了啊,是否有sizeof的标准文档来说明编译器的处理方式呢,谢谢。

占个位置 我说说我的看法

昨天占了位置 今天说说
johnbiter 的库函数说是不正确的 sizeof是运算符 不是函数

我认同QQ_qmin的理解

先说下
double a;
int b;
sizeof(a+b)我想毫无疑问是8
sizeof(a+b+b)也还是8 不会有问题
sizeof(a+'b'+'b')是8应该也不会有问题吧

楼主sizeof问题特殊在"abcdefg"上 这是个const char数组
也就是个静态数组 我认为sizeof求静态数组实际上是没有意义的

如果不是静态数组
int data[10];
cout<<sizeof(data+'b')<<endl;
结果应该是4 返回一个指针的类型大小,像上面QQ_qmin的理解那样

静态数组的大小是一定的 按照C++的原则 程序员是知道而且一定知道静态数组的大小的 所以在用sizeof应该没什么意义

所以类似sizeof("abcdefg" + '2')到底是指针还是静态数组的大小都无所谓。具体是否与编译器有关也不得而知,我记得以前C里sizeof('2')是等于2的 也就是一个整形的占用大小~
////////////////////////////////////////////////////////
又要修改回答了
QQ_qmin后面的理解是错误的
char p[] = "abcdefg";
sizeof(p)//结果是8
sizeof(p+2)//结果是4,此时p被看为指针。
如果照此说
sizeof(p)=sizeof("abcdefg")
而sizeof(p+2)=sizeof("abcdefg"+2)
<